/*
 * TrocarCodigoDeAtivacao.h
 *
 * @author Bematech S.A.
 */

#ifndef __BILBAO_PROTOCOL_SERIAL_COMMAND_TROCAR_CODIGO_DE_ATIVACAO_CLASS_H__
#define __BILBAO_PROTOCOL_SERIAL_COMMAND_TROCAR_CODIGO_DE_ATIVACAO_CLASS_H__

#include "bilbao/protocol/serial/ASerialCommand.h"

namespace bilbao
{
	namespace protocol
	{
		namespace serial
		{
			namespace command
			{
				enum E_OPCAO
				{
					COD_ATIVACAO = 1,
					COD_ATIVACAO_EMERGENCIA = 2
				};

				class TrocarCodigoDeAtivacao : public ASerialCommand
				{
				public:
					/*
					 * Construtor
					 *
					 * Parâmetros
					 * 0 - codigoDeAtivacao
					 * 1 - opcao
					 * 2 - novoCodigo
					 * 3 - confNovoCodigo
					 */
					TrocarCodigoDeAtivacao( const String&, const String&, const String&, const String& );

					/*
					 * Destrutor
					 */
					virtual ~TrocarCodigoDeAtivacao( void );

					/*
					 * Getters parâmetros
					 */
					inline E_OPCAO Opcao( void ) { return _opcao; }
					inline String NovoCodigo( void ) { return _novoCodigo; }
					inline String ConfNovoCodigo( void ) { return _confNovoCodigo; }

					/*
					 * Setters parâmetros
					 */
					inline void Opcao( E_OPCAO opcao ) { _opcao = opcao; }
					inline void NovoCodigo( const String& novoCodigo ) { _novoCodigo = novoCodigo; }
					inline void ConfNovoCodigo( const String& confNovoCodigo ) { _confNovoCodigo = confNovoCodigo; }

				private:
					/*
					 *
					 */
					E_OPCAO _opcao;

					/*
					 *
					 */
					String _novoCodigo;

					/*
					 *
					 */
					String _confNovoCodigo;

				}; // class TrocarCodigoDeAtivacao
			} // namespace command
		} // namespace serial
	} // namespace protocol
} // namespace bilbao


#endif // __BILBAO_PROTOCOL_SERIAL_COMMAND_TROCAR_CODIGO_DE_ATIVACAO_CLASS_H__
